Spring ORM-এ @Table
এবং @Column
অ্যানোটেশন ব্যবহার করে ডাটাবেস টেবিলের সঙ্গে জাভা ক্লাসের ম্যাপিং করা হয়। এগুলো JPA (Java Persistence API) থেকে আসে এবং Hibernate বা JPA প্রোভাইডার ব্যবহারে খুবই কার্যকরী।
@Table
এবং @Column
কী?@Table
: একটি জাভা ক্লাসকে ডাটাবেস টেবিলের সঙ্গে সংযুক্ত (Map) করতে ব্যবহৃত হয়। এটি টেবিলের নাম ও অন্যান্য বৈশিষ্ট্য নির্ধারণ করে।@Column
: ডাটাবেস টেবিলের নির্দিষ্ট একটি কলামের সঙ্গে জাভা ক্লাসের একটি ফিল্ড সংযুক্ত করতে ব্যবহৃত হয়।@Table
এবং @Column
এর ব্যবহারimport jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Column;
@Entity
@Table(name = "employees")
public class Employee {
@Id
@Column(name = "employee_id", nullable = false)
private Long id;
@Column(name = "employee_name", length = 100, nullable = false)
private String name;
@Column(name = "department")
private String department;
@Column(name = "salary", columnDefinition = "DECIMAL(10, 2)")
private Double salary;
// Getters and Setters
}
@Table
এবং @Column
এর ব্যবহার ব্যাখ্যা@Table
এর বৈশিষ্ট্যname
: ডাটাবেস টেবিলের নাম নির্ধারণ করে।schema
: স্কিমা স্পেসিফাই করতে ব্যবহৃত হয় (যদি প্রয়োজন হয়)।catalog
: ডাটাবেস ক্যাটালগ নির্ধারণ করতে ব্যবহৃত হয়।উদাহরণ:
@Table(name = "employees", schema = "hr")
@Column
এর বৈশিষ্ট্যname
: ডাটাবেস কলামের নাম নির্ধারণ করে।length
: স্ট্রিং টাইপের কলামের দৈর্ঘ্য নির্ধারণ করে।nullable
: কলামে NULL
অনুমতি দেওয়া হবে কি না।unique
: কলামটিকে ইউনিক কনস্ট্রেইন্ট দেয়।columnDefinition
: কলামের ডাটাটাইপ নির্ধারণ করে।উদাহরণ:
@Column(name = "employee_name", length = 100, nullable = false, unique = true)
@Entity
ব্যবহার করে ক্লাসকে Entity হিসেবে চিহ্নিত করা।@Table
ব্যবহার করে ডাটাবেস টেবিলের নাম কনফিগার করা।@Column
ব্যবহার করে প্রতিটি ফিল্ডকে কলামের সঙ্গে সংযুক্ত করা।@Table
এবং @Column
সহ একটি পূর্ণাঙ্গ Entityimport jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Column;
@Entity
@Table(name = "products")
public class Product {
@Id
@Column(name = "product_id")
private Long id;
@Column(name = "product_name", nullable = false, length = 255)
private String name;
@Column(name = "price", columnDefinition = "DECIMAL(10, 2)")
private Double price;
@Column(name = "description", length = 500)
private String description;
// Getters and Setters
}
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Product saveProduct(Product product) {
return productRepository.save(product);
}
}
@Table
এবং @Column
এর মাধ্যমে টেবিল এবং কলাম ম্যাপিং অত্যন্ত সহজ হয়, যা ডাটাবেসের সঙ্গে জাভা ক্লাসের সঠিক সংযোগ নিশ্চিত করে।
Read more